package Commands

import (
	"fmt"
	"time"

	"github.com/robfig/cron/v3"
)

func Demo() {
	c := cron.New() //  定义定时任务
	/**
	| --------------------------------------------------------------------
	|   							预定义时间表	    					  |
	| --------------------------------------------------------------------
	|
	| 		@yearly or @annually   每年运行一次
	| 		@monthly - 每月运行一次
	| 		@weekly - 每周运行一次
	| 		@daily 或 @midnight - 每天运行一次
	| 		@hourly - 每小时运行一次
	| 		@every <duration> - 自定义间隔（如 @every 10s, @every 1h30m）
	|
	| --------------------------------------------------------------------
	*/

	// 添加定时任务
	// 每分钟执行一次
	c.AddFunc("@every 1m", func() {
		fmt.Println("每分钟执行一次:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每5秒执行一次
	c.AddFunc("@every 5s", func() {
		fmt.Println("每5秒执行一次:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每小时执行一次
	c.AddFunc("@hourly", func() {
		fmt.Println("每小时执行一次:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每分钟的第30秒执行
	c.AddFunc("30 * * * * *", func() {
		fmt.Println("每分钟的第30秒执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每小时的30分0秒执行
	c.AddFunc("0 30 * * * *", func() {
		fmt.Println("每小时的30分0秒执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每天12:30:00执行
	c.AddFunc("0 30 12 * * *", func() {
		fmt.Println("每天12:30:00执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每10秒执行一次
	c.AddFunc("@every 10s", func() {
		fmt.Println("每10秒执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每分钟的第15秒执行
	c.AddFunc("15 * * * * *", func() {
		fmt.Println("每分钟的第15秒执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每小时的第30分钟执行
	c.AddFunc("0 30 * * * *", func() {
		fmt.Println("每小时的第30分钟执行:", time.Now().Format("2006-01-02 15:04:05"))
	})
	// 每天10:15:00执行
	c.AddFunc("0 15 10 * * *", func() {
		fmt.Println("每天10:15:00执行:", time.Now().Format("2006-01-02 15:04:05"))
	})

	// 启动定时任务
	c.Start()

	// 阻塞主线程，否则主线程推出后定时任务也会停止
	select {}
}
